package be.vdab.dao;

import java.math.BigDecimal;
import java.util.List;

import javax.persistence.Query;
import javax.persistence.TypedQuery;

import be.vdab.entities.Artikel;

public class ArtikelDAO extends AbstractDAO {
	public void create(Artikel artikel){
		getEntityManager().persist(artikel);
	}
	
	public List<Artikel> findByNaamContains(String woord){
		TypedQuery<Artikel> query = getEntityManager().createNamedQuery("Artikel.findByNaamContains",Artikel.class);
		query.setParameter("woord", '%' + woord + '%');
		return query.getResultList();
	}
	
	public List<Artikel> findArtikels(){
		TypedQuery<Artikel> query = getEntityManager().createNamedQuery("Artikel.findArtikels",Artikel.class);
		return query.getResultList();
	}
	
	public void verhoogArtikelPrijs(BigDecimal percentage){
		Query query = getEntityManager().createNamedQuery("Artikel.verhoogArtikelPrijs");
		query.setParameter("percentage", percentage);
		query.executeUpdate();
	}
	
	public Artikel findKorting(long artikelNr){
		TypedQuery<Artikel> query = getEntityManager().createNamedQuery("Artikel.findKorting",Artikel.class);
		query.setParameter("artikelNr", artikelNr);
		return query.getSingleResult();
	}
	
	public Iterable<Artikel> findArtikelsPerArtikelgroep(long artikelgroepNr) {
		TypedQuery<Artikel> query = getEntityManager().createNamedQuery(
				"Artikel.findArtikelsPerArtikelgroep", Artikel.class);
		query.setParameter("artikelgroepNr", artikelgroepNr);
		return query.getResultList();
	}
}
